package com.dyw.application.config;

import com.dyw.application.bean.Cat;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
import org.springframework.context.annotation.Import;

/**
 * @author Devil
 * @create 2022-01-14-15:24
 */


/**
 * 1. 配置类里面使用@Bean标注在方法的上面给容器注册组件,默认也是单实例的
 * 2. 配置类本身也是组件
 * 3. proxyBeanMethods()方法:代理bean的方法
 *      当@Configuration中的参数proxyBeanMethods 的值为true时为代理模式 Cglib代理 会在原来的方法上增加功能 判断容器中是否已有对象 单例模式
 *      当@Configuration中的参数proxyBeanMethods 的值为false时为非代理模式 就是非单例模式
 *      Full(proxyBeanMethods = true)
 *      Lite(proxyBeanMethods = false)
 *
 *
 * 4. //@Import({Cat.class}) 给容器中自动创建出这个类型的组件  默认组件的名字为全类名
 *
 *
 */


@Configuration(proxyBeanMethods = false)
public class MyConfig {


    /**
     * 外部无论对配置类中的这个组件注解方法调用多少次,获取的都是之前注册容器中的单实例对象
     *
     *
     *
     * //给容器中添加组件.以方法名作为组件的id,返回类型的,就是组件在容器中的实例
     * @return Cat
     */
    @Bean
    public Cat cat(){
        return new Cat();
    }

}
